// 给定一个非负整数数组nums，将数组中的数字拼起来排成一个数，打印能拼接出的所有数字中的最大的一个

// 思路，自定义排序，数组中排序的比较规则是如果 x + y 大于 y + x则 x 排到前面
// 时间复杂度：O(nlogn)
// 空间复杂度：O(logn)

function largestNumber(arr) {
    function compare(a, b) {
        let x = Number(String(a) + String(b))
        let y = Number(String(b) + String(a))
        // 负数， a在b前面，x < y
        // 正数， b在a前面，y > x
        // 0,不变
        return y - x
    }
    arr.sort(compare)
    if (arr[0] === 0) {
        return '0'
    }
    return arr.join('')
}

let nums = [3, 30, 34, 5, 9]
console.log(largestNumber(nums));